With the advent of the computer age, computer and software users have grown accustomed to user-friendly software applications that help then write, calculate, organize, prepare presentations, send and receive electronic mail, make music, and the like. For example, modern electronic word processing applications allow users to prepare a variety of useful documents. Modern spreadsheet applications allow users to enter, manipulate, and organize data. Modern electronic slide presentation applications allow users to create a variety of slide presentations containing text, pictures, data or other useful objects.
In many cases, it is advantageous to structure documents created by such applications according to a structured markup language such as the Extensible Markup Language (XML). An XML-structured document typically consists of a tree of XML tags, and each tag has a prefix and a name. The prefixes of the XML tags are mapped to XML namespaces based on tag attributes in the Extensible Markup Language that define the mapping between a given tag and an associated namespace. This mapping of prefixes to namespaces can change throughout an XML tree. A prefix mapping at one point in a given XML structure may not be valid at another point. Or, that prefix may map to a completely different namespace. One problem includes maintaining these prefix-to-namespace mappings throughout the tree of XML tags. Because parsing performance is important, maintaining prefix-to-namespace mappings needs to be done efficiently.
Prior methods and systems of XML namespace parsing have been used for generating a tree of prefix-to-namespace mappings. Each node in the tree points to a start tag where the namespace comes into scope and a pointer to the end tag where the namespace goes out of scope. Such prior methods are not very efficient because to determine what namespaces are in scope at any point, a user must traverse upwards through the tree of mappings and collect namespaces along the way. Another problem is associated with the fact that the tree of namespaces is separate from the tree of XML tags, and keeping the tree of namespaces and the tree of XML tags in synchronization with each other is time-consuming, tedious, and inefficient.
It is with respect to these and other considerations that the present invention has been made.